package net.sxnic.ugr.user.dao;

import java.util.List;

import net.sxinfo.core.spring25.Dao;
import net.sxnic.ugr.DwType;
import net.sxnic.ugr.group.Group;
import net.sxnic.ugr.role.Role;
import net.sxnic.ugr.user.User;

/**
 * User Data Access Object
 *
 * @version $Revision$
 * @author 孙宇飞
 * @author 吕盛槐 update date : 2011-9-26
 */
 
public interface UserDao extends Dao<User,String> {
	
    /**
     * 查询最大的排名
     * @param id
     * @return
     */
    int findMaxUserOrder();
    
    /**
     * 获取隶属指定组的用户列表
     *
     * @param group 用户
     * @return 具有指定角色的组列表
     */
    List<User> getUserInGroup(Group group);
    
    /**
     * 获取具有指定角色的用户列表
     *
     * @param group 用户
     * @return 具有指定角色的组列表
     */
    List<User> getUserInRole(Role role);
    
    /**
     * 根据用户全称和用户类型获取用户实体
     * @param fullname 用户全称
     * @param dwType 枚举类型单位类别
     * @return 对应的实体
     */
    User getUserByFullname(String fullname,DwType dwType);
    
    /**
     * 获取某种单位类型的用户列表
     * @param dwType 单位类型
     * @return 用户列表
     */
    List<User> findAllByDwType(DwType dwType);
    
    /**
     * 根据单位类别获取用户最大编码
     * @param dwType 单位类别
     * @return 指定类别的用户最大编码
     */
    String findMaxByDwType(DwType dwType);
    
    /**
     * 根据用户名前缀获取该类用户的最大编码
     * @param userPrefix 用户名前缀
     * @return 指定前缀的用户最大类别
     */ 
    String findMaxByUserPrefix(String userPrefix);
    
}
